home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / as / sprite / RCS / sparc-opcode.h,v < prev    next >
Encoding:
Text File  |  1991-08-27  |  38.7 KB  |  1,008 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    rab:1.2; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.2
  10. date     90.06.28.15.24.16;  author rab;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     90.02.07.11.00.40;  author rab;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @@
  22.  
  23.  
  24. 1.2
  25. log
  26. @Added some missing opcodes and fixed some misc bugs.
  27. @
  28. text
  29. @/* Table of opcodes for the sparc.
  30.    Copyright (C) 1989 Free Software Foundation, Inc.
  31.  
  32. This file is part of GAS, the GNU Assembler, and GDB, the GNU disassembler.
  33.  
  34. GAS/GDB is free software; you can redistribute it and/or modify
  35. it under the terms of the GNU General Public License as published by
  36. the Free Software Foundation; either version 1, or (at your option)
  37. any later version.
  38.  
  39. GAS/GDB is distributed in the hope that it will be useful,
  40. but WITHOUT ANY WARRANTY; without even the implied warranty of
  41. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  42. GNU General Public License for more details.
  43.  
  44. You should have received a copy of the GNU General Public License
  45. along with GAS or GDB; see the file COPYING.  If not, write to
  46. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  47.  
  48. #if !defined(__STDC__) && !defined(const)
  49. #define const
  50. #endif
  51.  
  52. /*
  53.  * Structure of an opcode table entry.
  54.  */
  55. struct sparc_opcode
  56. {
  57.     const char *name;
  58.     unsigned long int match;    /* Bits that must be set.  */
  59.     unsigned long int lose;    /* Bits that must not be set.  */
  60.     const char *args;
  61.     /* Nonzero if this is a delayed branch instruction.  */
  62.     char delayed;
  63. };
  64.  
  65. /*
  66.    All sparc opcodes are 32 bits, except for the `set' instruction (really
  67.    a macro), which is 64 bits.  It is handled as a special case.
  68.  
  69.    The match component is a mask saying which bits must match a
  70.    particular opcode in order for an instruction to be an instance
  71.    of that opcode.
  72.  
  73.    The args component is a string containing one character
  74.    for each operand of the instruction.
  75.  
  76. Kinds of operands:
  77.    #    Number used by optimizer.  It is ignored.
  78.    1    rs1 register.
  79.    2    rs2 register.
  80.    d    rd register.
  81.    e    frs1 floating point register.
  82.    f    frs2 floating point register.
  83.    g    frsd floating point register.
  84.    b    crs1 coprocessor register
  85.    c    crs2 coprocessor register
  86.    D    crsd coprocessor register
  87.    h    22 high bits.
  88.    i    13 bit Immediate.
  89.    l    22 bit PC relative immediate.
  90.    L    30 bit PC relative immediate.
  91.    a    Annul.  The annul bit is set.
  92.    A    Alternate address space.  Stored as 8 bits.
  93.    C    Coprocessor state register.
  94.    F    floating point state register.
  95.    p    Processor state register.
  96.    q    Floating point queue.
  97.    r    Single register that is both rs1 and rsd.
  98.    Q    Coprocessor queue.
  99.    S    Special case.
  100.    t    Trap base register.
  101.    w    Window invalid mask register.
  102.    y    Y register.
  103.  
  104. */
  105.  
  106. /* The order of the opcodes in this table is significant:
  107.    
  108.    * The assembler requires that all instances of the same mnemonic must be
  109.    consecutive.  If they aren't, the assembler will bomb at runtime.
  110.  
  111.    * The disassembler should not care about the order of the opcodes.  */
  112.  
  113. static struct sparc_opcode sparc_opcodes[] =
  114. {
  115.  
  116. { "ldd",        0xc1980000, 0x0060201f, "[1],D", 0 }, /* ldd [rs1+%g0],d */
  117. { "ldd",        0xc1982000, 0x00601fff, "[1],D", 0 }, /* ldd [rs1+0],d */
  118. { "ldd",        0xc1982000, 0x00600000, "[1+i],D", 0 },
  119. { "ldd",        0xc1982000, 0x00600000, "[i+1],D", 0 },
  120. { "ldd",        0xc1980000, 0x00602000, "[1+2],D", 0 },
  121. { "ldd",        0xc1180000, 0x00e0201f, "[1],g", 0 }, /* ldd [rs1+%g0],d */
  122. { "ldd",        0xc1182000, 0x00e01fff, "[1],g", 0 }, /* ldd [rs1+0],d */
  123. { "ldd",        0xc1182000, 0x00e00000, "[1+i],g", 0 },
  124. { "ldd",        0xc1182000, 0x00e00000, "[i+1],g", 0 },
  125. { "ldd",        0xc1180000, 0x00e02000, "[1+2],g", 0 },
  126. { "ldd",    0xc0180000, 0x01e0201f, "[1],d", 0 }, /* ldd [rs1+%g0],d */
  127. { "ldd",        0xc0182000, 0x01e01fff, "[1],d", 0 }, /* ldd [rs1+0],d */
  128. { "ldd",    0xc0182000, 0x01e00000, "[1+i],d", 0 },
  129. { "ldd",    0xc0182000, 0x01e00000, "[i+1],d", 0 },
  130. { "ldd",    0xc0180000, 0x01e02000, "[1+2],d", 0 },
  131. { "ld",         0xc1880000, 0x0070201f, "[1],C", 0 }, /* ld [rs1+%g0],d */
  132. { "ld",         0xc1882000, 0x00701fff, "[1],C", 0 }, /* ld [rs1+0],d */
  133. { "ld",         0xc1882000, 0x00700000, "[1+i],C", 0 },
  134. { "ld",         0xc1882000, 0x00700000, "[i+1],C", 0 },
  135. { "ld",         0xc1880000, 0x00702000, "[1+2],C", 0 },
  136. { "ld",         0xc1800000, 0x0078001f, "[1],D", 0 }, /* ld [rs1+%g0],d */
  137. { "ld",         0xc1802000, 0x00781fff, "[1],D", 0 }, /* ld [rs1+0],d */
  138. { "ld",         0xc1802000, 0x00780000, "[1+i],D", 0 },
  139. { "ld",         0xc1802000, 0x00780000, "[i+1],D", 0 },
  140. { "ld",         0xc1800000, 0x00782000, "[1+2],D", 0 },
  141. { "ld",         0xc1080000, 0x00f0201f, "[1],F", 0 }, /* ld [rs1+%g0],d */
  142. { "ld",         0xc1082000, 0x00f01fff, "[1],F", 0 }, /* ld [rs1+0],d */
  143. { "ld",         0xc1082000, 0x00f00000, "[1+i],F", 0 },
  144. { "ld",         0xc1082000, 0x00f00000, "[i+1],F", 0 },
  145. { "ld",         0xc1080000, 0x00f02000, "[1+2],F", 0 },
  146. { "ld",         0xc1000000, 0x00f8201f, "[1],g", 0 }, /* ld [rs1+%g0],d */
  147. { "ld",         0xc1002000, 0x00f81fff, "[1],g", 0 }, /* ld [rs1+0],d */
  148. { "ld",         0xc1002000, 0x00f80000, "[1+i],g", 0 },
  149. { "ld",         0xc1002000, 0x00f80000, "[i+1],g", 0 },
  150. { "ld",         0xc1000000, 0x00f82000, "[1+2],g", 0 },
  151. { "ld",            0xc0000000, 0x01f8201f, "[1],d", 0 }, /* ld [rs1+%g0],d */
  152. { "ld",        0xc0002000, 0x01f81fff, "[1],d", 0 }, /* ld [rs1+0],d */
  153. { "ld",        0xc0002000, 0x01f80000, "[1+i],d", 0 },
  154. { "ld",        0xc0002000, 0x01f80000, "[i+1],d", 0 },
  155. { "ld",        0xc0000000, 0x01f82000, "[1+2],d", 0 },
  156. { "ldstuba",    0xc0d80000, 0x0100201f, "[1]A,d", 0 }, /* ldstuba [rs1+%g0],d */
  157. { "ldstuba",    0xc0d82000, 0x01001fff, "[1]A,d", 0 }, /* ldstuba [rs1+0],d */
  158. { "ldstuba",    0xc0d80000, 0x01002000, "[1+2]A,d", 0 },
  159. { "ldsha",      0xc0d00000, 0x0128201f, "[1]A,d", 0 }, /* ldsha [rs1+%g0],d */
  160. { "ldsha",    0xc0d02000, 0x01281fff, "[1]A,d", 0 }, /* ldsha [rs1+0],d */
  161. { "ldsha",    0xc0d00000, 0x01282000, "[1+2]A,d", 0 },
  162. { "ldsba",      0xc0c80000, 0x0130201f, "[1]A,d", 0 }, /* ldsba [rs1+%g0],d */
  163. { "ldsba",    0xc0c82000, 0x01301fff, "[1]A,d", 0 }, /* ldsba [rs1+0],d */
  164. { "ldsba",    0xc0c80000, 0x01302000, "[1+2]A,d", 0 },
  165. { "ldda",       0xc0980000, 0x0160201f, "[1]A,d", 0 }, /* ldda [rs1+%g0],d */
  166. { "ldda",    0xc0982000, 0x01601fff, "[1]A,d", 0 }, /* ldda [rs1+0],d */
  167. { "ldda",    0xc0980000, 0x01602000, "[1+2]A,d", 0 },
  168. { "lduha",      0xc0900000, 0x0168201f, "[1]A,d", 0 }, /* lduha [rs1+%g0],d */
  169. { "lduha",      0xc0902000, 0x01681fff, "[1]A,d", 0 }, /* lduha [rs1+0],d */
  170. { "lduha",    0xc0900000, 0x01682000, "[1+2]A,d", 0 },
  171. { "ldstub",     0xc0680000, 0x0190201f, "[1],d", 0 }, /* ldstub [rs1+%g0],d */
  172. { "ldstub",    0xc0682000, 0x01901fff, "[1],d", 0 }, /* ldstub [rs1+0],d */
  173. { "ldstub",    0xc0682000, 0x01900000, "[1+i],d", 0 },
  174. { "ldstub",    0xc0682000, 0x01900000, "[i+1],d", 0 },
  175. { "ldstub",    0xc0680000, 0x01902000, "[1+2],d", 0 },
  176. { "lda",        0xc0800000, 0x0178201f, "[1]A,d", 0 }, /* lda [rs1+%g0],d */
  177. { "lda",    0xc0802000, 0x01781fff, "[1]A,d", 0 }, /* lda [rs1+0],d */
  178. { "lda",    0xc0800000, 0x01782000, "[1+2]A,d", 0 },
  179. { "ldsh",       0xc0500000, 0x0000200d, "[1],d", 0 }, /* ldsh [rs1+%g0],d */
  180. { "ldsh",       0xc0502000, 0x01a81fff, "[1],d", 0 }, /* ldsh [rs1+0],d */
  181. { "ldsh",    0xc0502000, 0x01a80000, "[1+i],d", 0 },
  182. { "ldsh",    0xc0502000, 0x01a80000, "[i+1],d", 0 },
  183. { "ldsh",    0xc0500000, 0x01a82000, "[1+2],d", 0 },
  184. { "ldsb",       0xc0480000, 0x01b0201f, "[1],d", 0 }, /* ldsb [rs1+%g0],d */
  185. { "ldsb",    0xc0482000, 0x01b01fff, "[1],d", 0 }, /* ldsb [rs1+0],d */
  186. { "ldsb",    0xc0482000, 0x01b00000, "[1+i],d", 0 },
  187. { "ldsb",    0xc0482000, 0x01b00000, "[i+1],d", 0 },
  188. { "ldsb",    0xc0480000, 0x01b02000, "[1+2],d", 0 },
  189. { "ldub",       0xc0080000, 0x01f0201f, "[1],d", 0 }, /* ldub [rs1+%g0],d */
  190. { "ldub",       0xc0082000, 0x01f01fff, "[1],d", 0 }, /* ldub [rs1+0],d */
  191. { "ldub",    0xc0082000, 0x01f00000, "[1+i],d", 0 },
  192. { "ldub",    0xc0082000, 0x01f00000, "[i+1],d", 0 },
  193. { "ldub",    0xc0080000, 0x01f02000, "[1+2],d", 0 },
  194. { "lduba",      0xc0880000, 0x0170201f, "[1]A,d", 0 }, /* lduba [rs1+%g0],d */
  195. { "lduba",      0xc0882000, 0x01701fff, "[1]A,d", 0 }, /* lduba [rs1+0],d */
  196. { "lduba",    0xc0880000, 0x01702000, "[1+2]A,d", 0 },
  197. { "lduh",    0xc0102000, 0x01e80000, "[1+i],d", 0 },
  198. { "lduh",    0xc0102000, 0x01e80000, "[i+1],d", 0 },
  199. { "lduh",    0xc0100000, 0x01e8201f, "[1],d", 0 }, /* lduh [rs1+%g0],d */
  200. { "lduh",    0xc0102000, 0x01e81fff, "[1],d", 0 }, /* lduh [rs1+0],d */
  201. { "lduh",    0xc0100000, 0x01e82000, "[1+2],d", 0 },
  202.  
  203. { "st",            0xc0200000, 0x01d8201f, "d,[1]", 0 }, /* st d,[rs1+%g0] */
  204. { "st",            0xc0202000, 0x01d81fff, "d,[1]", 0 }, /* st d,[rs1+0] */
  205. { "st",        0xc0202000, 0x01d80000, "d,[1+i]", 0 },
  206. { "st",        0xc0202000, 0x01d80000, "d,[i+1]", 0 },
  207. { "st",        0xc0200000, 0x01d82000, "d,[1+2]", 0 },
  208. { "st",        0xc1200000, 0x00d8201f, "g,[1]", 0 }, /* st d[rs1+%g0] */
  209. { "st",        0xc1202000, 0x00d81fff, "g,[1]", 0 }, /* st d,[rs1+0] */
  210. { "st",        0xc1202000, 0x00d80000, "g,[1+i]", 0 },
  211. { "st",        0xc1202000, 0x00d80000, "g,[i+1]", 0 },
  212. { "st",        0xc1200000, 0x00d82000, "g,[1+2]", 0 },
  213. { "st",        0xc1280000, 0x00d0201f, "F,[1]", 0 }, /* st d,[rs1+%g0] */
  214. { "st",            0xc1282000, 0x00d01fff, "F,[1]", 0 }, /* st d,[rs1+0] */
  215. { "st",        0xc1282000, 0x00d00000, "F,[1+i]", 0 },
  216. { "st",        0xc1282000, 0x00d00000, "F,[i+1]", 0 },
  217. { "st",        0xc1280000, 0x00d02000, "F,[1+2]", 0 },
  218. { "st",        0xc1a00000, 0x0058001f, "D,[1]", 0 }, /* st d,[rs1+%g0] */
  219. { "st",        0xc1a02000, 0x00581fff, "D,[1]", 0 }, /* st d,[rs1+0] */
  220. { "st",        0xc1a02000, 0x00580000, "D,[1+i]", 0 },
  221. { "st",        0xc1a02000, 0x00580000, "D,[i+1]", 0 },
  222. { "st",        0xc1a00000, 0x00582000, "D,[1+2]", 0 },
  223. { "st",        0xc1a80000, 0x0050201f, "C,[1]", 0 }, /* st d,[rs1+%g0] */
  224. { "st",        0xc1a82000, 0x00501fff, "C,[1]", 0 }, /* st d,[rs1+0] */
  225. { "st",        0xc1a82000, 0x00500000, "C,[1+i]", 0 },
  226. { "st",        0xc1a82000, 0x00500000, "C,[i+1]", 0 },
  227. { "st",        0xc1a80000, 0x00502000, "C,[1+2]", 0 },
  228. { "sta",        0xc0a00000, 0x0108201f, "d,[1]A", 0 }, /* sta d,[rs1+%g0] */
  229. { "sta",    0xc0a02000, 0x01081fff, "d,[1]A", 0 }, /* sta d,[rs1+0] */
  230. { "sta",    0xc0a00000, 0x01082000, "d,[1+2]A", 0 },
  231.  
  232. { "stb",        0xc0280000, 0x01d0201f, "d,[1]", 0 }, /* stb d,[rs1+%g0] */
  233. { "stb",    0xc0282000, 0x01d01fff, "d,[1]", 0 }, /* stb d,[rs1+0] */
  234. { "stb",    0xc0282000, 0x01d00000, "d,[1+i]", 0 },
  235. { "stb",    0xc0282000, 0x01d00000, "d,[i+1]", 0 },
  236. { "stb",    0xc0280000, 0x01d02000, "d,[1+2]", 0 },
  237. { "stba",       0xc0a80000, 0x01002000, "d,[1+2]A", 0 },
  238. { "stba",    0xc0a80000, 0x0100201f, "d,[1]A", 0 }, /* stba d,[rs1+%g0] */
  239. { "stba",    0xc0a82000, 0x01001fff, "d,[1]A", 0 }, /* stba d,[rs1+0] */
  240.  
  241. { "std",        0xc0380000, 0x01c0201f, "d,[1]", 0 }, /* std d,[rs1+%g0] */
  242. { "std",    0xc0382000, 0x01c01fff, "d,[1]", 0 }, /* std d,[rs1+0] */
  243. { "std",    0xc0382000, 0x01c00000, "d,[1+i]", 0 },
  244. { "std",    0xc0382000, 0x01c00000, "d,[i+1]", 0 },
  245. { "std",    0xc0380000, 0x01c02000, "d,[1+2]", 0 },
  246. { "std",    0xc1380000, 0x00c0201f, "g,[1]", 0 }, /* std d,[rs1+%g0] */
  247. { "std",        0xc1382000, 0x00c01fff, "g,[1]", 0 }, /* std d,[rs1+0] */
  248. { "std",    0xc1382000, 0x00c00000, "g,[1+i]", 0 },
  249. { "std",    0xc1382000, 0x00c00000, "g,[i+1]", 0 },
  250. { "std",    0xc1380000, 0x00c02000, "g,[1+2]", 0 },
  251. { "std",        0xc1300000, 0x00c8201f, "q,[1]", 0 }, /* std d,[rs1+%g0] */
  252. { "std",    0xc1302000, 0x00c81fff, "q,[1]", 0 }, /* std d,[rs1+0] */
  253. { "std",    0xc1302000, 0x00c80000, "q,[1+i]", 0 },
  254. { "std",    0xc1302000, 0x00c80000, "q,[i+1]", 0 },
  255. { "std",    0xc1300000, 0x00c82000, "q,[1+2]", 0 },
  256. { "std",    0xc1b80000, 0x0040201f, "D,[1]", 0 }, /* std d,[rs1+%g0] */
  257. { "std",    0xc1b82000, 0x00401fff, "D,[1]", 0 }, /* std d,[rs1+0] */
  258. { "std",    0xc1b82000, 0x00400000, "D,[1+i]", 0 },
  259. { "std",    0xc1b82000, 0x00400000, "D,[i+1]", 0 },
  260. { "std",    0xc1b80000, 0x00402000, "D,[1+2]", 0 },
  261. { "std",    0xc1b00000, 0x0048201f, "Q,[1]", 0 }, /* std d,[rs1+%g0] */
  262. { "std",    0xc1b02000, 0x00481fff, "Q,[1]", 0 }, /* std d,[rs1+0] */
  263. { "std",    0xc1b02000, 0x00480000, "Q,[1+i]", 0 },
  264. { "std",    0xc1b02000, 0x00480000, "Q,[i+1]", 0 },
  265. { "std",    0xc1b00000, 0x00482000, "Q,[1+2]", 0 },
  266. { "stda",       0xc0b80000, 0x01402000, "d,[1+2]A", 0 },
  267. { "stda",    0xc0b80000, 0x0140201f, "d,[1]A", 0 }, /* stda d,[rs1+%g0] */
  268. { "stda",    0xc0b82000, 0x01401fff, "d,[1]A", 0 }, /* stda d,[rs1+0] */
  269.  
  270. { "sth",        0xc0300000, 0x01c8201f, "d,[1]", 0 }, /* sth d,[rs1+%g0] */
  271. { "sth",    0xc0302000, 0x01c81fff, "d,[1]", 0 }, /* sth d,[rs1+0] */
  272. { "sth",    0xc0300000, 0x01c82000, "d,[1+2]", 0 },
  273. { "sth",    0xc0302000, 0x01c80000, "d,[1+i]", 0 },
  274. { "sth",    0xc0302000, 0x01c80000, "d,[i+1]", 0 },
  275. { "stha",       0xc0b00000, 0x0148201f, "d,[1]A", 0 }, /* stha d,[rs1+%g0] */
  276. { "stha",       0xc0b02000, 0x01481fff, "d,[1]A", 0 }, /* stha d,[rs1+0] */
  277. { "stha",    0xc0b00000, 0x01482000, "d,[1+2]A", 0 },
  278.  
  279. { "swap",       0xc0780000, 0x0180201f, "[1],d", 0 }, /* swap [rs1+%g0],d */
  280. { "swap",       0xc0782000, 0x01801fff, "[1],d", 0 }, /* swap [rs1+0],d */
  281. { "swap",       0xc0782000, 0x01800000, "[1+i],d", 0 },
  282. { "swap",       0xc0782000, 0x01800000, "[i+1],d", 0 },
  283. { "swap",       0xc0780000, 0x01802000, "[1+2],d", 0 },
  284. { "swapa",      0xc0f82000, 0x01000000, "[1+2]A,d", 0 },
  285. { "swapa",      0xc0f80000, 0x0100201f, "[1]A,d", 0 }, /* swapa [rs1+%g0],d */
  286. { "swapa",      0xc0f82000, 0x01001fff, "[1]A,d", 0 }, /* swapa [rs1+0],d */
  287.  
  288. { "restore",    0x81e80000, 0x7e17e01f, "", 0 }, /* restore %g0,%g0,%g0 */
  289. { "restore",    0x81e82000, 0x7e14dfff, "", 0 }, /* restore %g0,0,%g0 */
  290. { "restore",    0x81e82000, 0x00000000, "1,i,d", 0 },
  291. { "restore",    0x81e80000, 0x00000000, "1,2,d", 0 },
  292. { "rett",    0x81c80000, 0x40302000, "1", 1 },
  293. { "rett",       0x81c82000, 0x40300000, "1,i,d", 1 },
  294. { "rett",    0x81c80000, 0x40302000, "1,2,d", 1 },
  295.  
  296. { "save",       0x81e02000, 0x40180000, "1,i,d", 0 },
  297. { "save",    0x81e00000, 0x40182000, "1,2,d", 0 },
  298. { "save",    0x81e00000, 0x7e1fffff, "", 0 },
  299.  
  300. { "ret",    0x81c7e008, 0x00001ff7, "", 1 }, /* jmpl %i7+8,%g0 */
  301. { "retl",       0x81c3e008, 0x00001ff7, "", 1 }, /* jmpl %o7+8,%g0 */
  302.  
  303. { "jmpl",       0x81c00000, 0x4038201f, "1,d", 1 }, /* jmpl rs1+%g0,d */
  304. { "jmpl",    0x81c02000, 0x4037c000, "i,d", 1 }, /* jmpl %g0+i,d */
  305. { "jmpl",    0x81c02000, 0x40380000, "1+i,d", 1 },
  306. { "jmpl",    0x81c02000, 0x40380000, "i+1,d", 1 },
  307. { "jmpl",    0x81c00000, 0x40382000, "1+2,d", 1 },
  308. { "wr",         0x81982000, 0x40600000, "1,i,t", 0 },
  309. { "wr",         0x81980000, 0x40602000, "1,2,t", 0 },
  310. { "wr",         0x81902000, 0x40680000, "1,i,w", 0 },
  311. { "wr",         0x81900000, 0x40682000, "1,2,w", 0 },
  312. { "wr",         0x81882000, 0x40700000, "1,i,p", 0 },
  313. { "wr",         0x81880000, 0x40702000, "1,2,p", 0 },
  314. { "wr",         0x81802000, 0x40780000, "1,i,y", 0 },
  315. { "wr",         0x81800000, 0x40782000, "1,2,y", 0 },
  316.  
  317. { "rd",     0x81580000, 0x40a00000, "t,d", 0 },
  318. { "rd",     0x81500000, 0x40a80000, "w,d", 0 },
  319. { "rd",     0x81480000, 0x40b00000, "p,d", 0 },
  320. { "rd",         0x81400000, 0x40b80000, "y,d", 0 },
  321.  
  322. { "sra",    0x81382000, 0x00000000, "1,i,d", 0 },
  323. { "sra",    0x81380000, 0x00002000, "1,2,d", 0 },
  324. { "srl",        0x81302000, 0x40c80000, "1,i,d", 0 },
  325. { "srl",    0x81300000, 0x40c82000, "1,2,d", 0 },
  326. { "sll",        0x81282000, 0x40d00000, "1,i,d", 0 },
  327. { "sll",    0x81280000, 0x40d02000, "1,2,d", 0 },
  328.  
  329. { "mulscc",     0x81202000, 0x40d80000, "1,i,d", 0 },
  330. { "mulscc",    0x81200000, 0x40d82000, "1,2,d", 0 },
  331.  
  332. { "clr",        0x80100000, 0x4e87e01f, "d", 0 }, /* or %g0,%g0,d */
  333. { "clr",        0x80102000, 0x41efdfff, "d", 0 }, /* or %g0,0,d   */
  334.  
  335. { "orncc",      0x80b02000, 0x04048000, "1,i,d", 0 },
  336. { "orncc",      0x80b02000, 0x04048000, "i,1,d", 0 },
  337. { "orncc",    0x80b00000, 0x0404a000, "1,2,d", 0 },
  338.  
  339. { "tst",        0x80900000, 0x7f6fe000, "2", 0 }, /* orcc %g0, rs2, %g0 */
  340. { "tst",        0x80900000, 0x7f68201f, "1", 0 }, /* orcc rs1, %g0, %g0 */
  341. { "tst",        0x80902000, 0x7f681fff, "1", 0 }, /* orcc rs1, 0, %g0 */
  342.  
  343. { "orcc",       0x80902000, 0x41680000, "1,i,d", 0 },
  344. { "orcc",    0x80902000, 0x41680000, "i,1,d", 0 },
  345. { "orcc",    0x80900000, 0x41682000, "1,2,d", 0 },
  346. { "orn",        0x80302000, 0x41c80000, "1,i,d", 0 },
  347. { "orn",    0x80302000, 0x41c80000, "i,1,d", 0 },
  348. { "orn",    0x80300000, 0x41c82000, "1,2,d", 0 },
  349.  
  350. { "mov",        0x80102000, 0x41efc000, "i,d", 0 }, /* or %g0,i,d   */
  351. { "mov",        0x80100000, 0x41efe000, "2,d", 0 }, /* or %g0,rs2,d */
  352.  
  353. { "mov",     0x81480000, 0x40b00000, "p,d", 0 },
  354. { "mov",     0x81580000, 0x40a00000, "t,d", 0 },
  355. { "mov",     0x81500000, 0x40a80000, "w,d", 0 },
  356. { "mov",        0x81400000, 0x40a80000, "y,d", 0 },
  357.  
  358. { "mov",        0x81880000, 0x40702000, "2,p", 0 },
  359. { "mov",        0x81882000, 0x40700000, "1,i,p", 0 },
  360. { "mov",        0x81980000, 0x40602000, "2,t", 0 },
  361. { "mov",        0x81982000, 0x40600000, "1,i,t", 0 },
  362. { "mov",        0x81900000, 0x40682000, "2,w", 0 },
  363. { "mov",        0x81902000, 0x40680000, "1,i,w", 0 },
  364. { "mov",        0x81902000, 0x40681fff, "i,w", 0 },
  365. { "mov",        0x81800000, 0x4078201f, "1,y", 0 }, /* wr rs1,%g0,%y */
  366. { "mov",        0x81802000, 0x40781fff, "1,y", 0 }, /* wr rs1,0,%y */
  367. { "mov",        0x81800000, 0x40782000, "2,y", 0 },
  368. { "mov",        0x81802000, 0x40780000, "1,i,y", 0 },
  369.  
  370. { "or",            0x80102000, 0x40800000, "1,i,d", 0 },
  371. { "or",        0x80102000, 0x40800000, "i,1,d", 0 },
  372. { "or",        0x80100000, 0x40802000, "1,2,d", 0 },
  373.  
  374. { "andncc",     0x80a82000, 0x41500000, "1,i,d", 0 },
  375. { "andncc",    0x80a82000, 0x41500000, "i,1,d", 0 },
  376. { "andncc",    0x80a80000, 0x41502000, "1,2,d", 0 },
  377. { "andn",       0x80282000, 0x41d00000, "1,i,d", 0 },
  378. { "andn",    0x80282000, 0x41d00000, "i,1,d", 0 },
  379. { "andn",    0x80280000, 0x41d02000, "1,2,d", 0 },
  380.  
  381. { "cmp",        0x80a02000, 0x7d580000, "1,i", 0 },     /* subcc rs1,i,%g0 */
  382. { "cmp",    0x80a00000, 0x7d582000, "1,2", 0 },     /* subcc rs1,rs2,%g0 */
  383.  
  384. { "subcc",      0x80a02000, 0x41580000, "1,i,d", 0 },
  385. { "subcc",    0x80a00000, 0x41582000, "1,2,d", 0 },
  386. { "sub",    0x80202000, 0x41d80000, "1,i,d", 0 },
  387. { "sub",    0x80200000, 0x41d82000, "1,2,d", 0 },
  388. { "subx",    0x80602000, 0x41980000, "1,i,d", 0 },
  389. { "subx",    0x80600000, 0x41982000, "1,2,d", 0 },
  390. { "subxcc",     0x80e02000, 0x41180000, "1,i,d", 0 },
  391. { "subxcc",    0x80e00000, 0x41182000, "1,2,d", 0 },
  392.  
  393. { "andcc",      0x80882000, 0x41700000, "1,i,d", 0 },
  394. { "andcc",    0x80882000, 0x41700000, "i,1,d", 0 },
  395. { "andcc",    0x80880000, 0x41702000, "1,2,d", 0 },
  396. { "and",        0x80082000, 0x41f00000, "1,i,d", 0 },
  397. { "and",    0x80082000, 0x41f00000, "i,1,d", 0 },
  398. { "and",    0x80080000, 0x41f02000, "1,2,d", 0 },
  399.  
  400. { "inc",    0x80002001, 0x00001ffe, "r", 0 },       /* add rs1,1,rsd */
  401.  
  402. { "addxcc",     0x80c02000, 0x41380000, "1,i,d", 0 },
  403. { "addxcc",     0x80c02000, 0x41380000, "i,1,d", 0 },
  404. { "addxcc",     0x80c00000, 0x41382000, "1,2,d", 0 },
  405. { "addcc",      0x80802000, 0x41780000, "1,i,d", 0 },
  406. { "addcc",      0x80802000, 0x41780000, "i,1,d", 0 },
  407. { "addcc",      0x80800000, 0x41782000, "1,2,d", 0 },
  408. { "addx",       0x80402000, 0x41b80000, "1,i,d", 0 },
  409. { "addx",    0x80402000, 0x41b80000, "i,1,d", 0 },
  410. { "addx",    0x80400000, 0x41b82000, "1,2,d", 0 },
  411. { "add",        0x80002000, 0x41f80000, "1,i,d", 0 },
  412. { "add",    0x80002000, 0x41f80000, "i,1,d", 0 },
  413. { "add",    0x80000000, 0x41f82000, "1,2,d", 0 },
  414.  
  415. { "call",       0x9fc00000, 0x4038001f, "1", 1 }, /* jmpl rs1+%g0, %o7 */
  416. { "call",    0x9fc00000, 0x4038001f, "1,#", 1 },
  417. { "call",    0x40000000, 0x80000000, "L", 1 },
  418. { "call",    0x40000000, 0x80000000, "L,#", 1 },
  419.  
  420. { "bvc",        0x3e800000, 0xc1400000, ",al", 1 },
  421. { "bvc",    0x1e800000, 0xc1400000, "l", 1 },
  422. { "bvs",    0x2e800000, 0xc1400000, ",al", 1 },
  423. { "bvs",    0x0e800000, 0xc1400000, "l", 1 },
  424. { "bpos",    0x3c800000, 0xc1400000, ",al", 1 },
  425. { "bpos",    0x1c800000, 0xc1400000, "l", 1 },
  426. { "bneg",    0x2c800000, 0xc1400000, ",al", 1 },
  427. { "bneg",    0x0c800000, 0xc1400000, "l", 1 },
  428. { "bcc",    0x3a800000, 0xc1400000, ",al", 1 },
  429. { "bcc",    0x1a800000, 0xc1400000, "l", 1 },
  430. { "bcs",    0x2a800000, 0xc1400000, ",al", 1 },
  431. { "bcs",    0x0a800000, 0xc1400000, "l", 1 },
  432. { "blu",    0x2a800000, 0xc1400000, ",al", 1 },
  433. { "blu",    0x0a800000, 0xc1400000, "l", 1 }, /* same as bcs */
  434. { "bgeu",    0x3a800000, 0xc1400000, ",al", 1 },
  435. { "bgeu",    0x1a800000, 0xc1400000, "l", 1 }, /* same as bcc */
  436. { "bgu",    0x38800000, 0xc1400000, ",al", 1 },
  437. { "bgu",    0x18800000, 0xc1400000, "l", 1 },
  438. { "bleu",    0x28800000, 0xc1400000, ",al", 1 },
  439. { "bleu",    0x08800000, 0xc1400000, "l", 1 },
  440. { "bge",    0x36800000, 0xc1400000, ",al", 1 },
  441. { "bge",    0x16800000, 0xc1400000, "l", 1 },
  442. { "bl",        0x26800000, 0xc1400000, ",al", 1 },
  443. { "bl",        0x06800000, 0xc1400000, "l", 1 },
  444. { "bg",        0x34800000, 0xc1400000, ",al", 1 },
  445. { "bg",        0x14800000, 0xc1400000, "l", 1 },
  446. { "ble",    0x24800000, 0xc1400000, ",al", 1 },
  447. { "ble",    0x04800000, 0xc1400000, "l", 1 },
  448. { "be",        0x22800000, 0xc1400000, ",al", 1 },
  449. { "be",        0x02800000, 0xc1400000, "l", 1 },
  450. { "bne",    0x32800000, 0xc1400000, ",al", 1 },
  451. { "bne",    0x12800000, 0xc1400000, "l", 1 },
  452. { "bnz",    0x32800000, 0xc1400000, ",al", 1 }, /* same as bnz */
  453. { "bnz",    0x12800000, 0xc1400000, "l", 1 },   /* same as bnz */
  454.  
  455. { "b",        0x30800000, 0xc1400000, ",al", 1 },
  456. { "b",        0x10800000, 0xc1400000, "l", 1 },
  457. { "ba",        0x30800000, 0xc1400000, ",al", 1 },
  458. { "ba",        0x10800000, 0xc1400000, "l", 1 },
  459. { "bn",     0x20800000, 0xc1400000, ",al", 1 },
  460. { "bn",        0x00800000, 0xc1400000, "l", 1 },
  461. { "bz",        0x22800000, 0xc1400000, ",al", 1 }, /* same as be */
  462. { "bz",        0x02800000, 0xc1400000, "l", 1 },   /* same as be */
  463.  
  464. { "jmp",        0x81c00000, 0x7e38201f, "1", 1 }, /* jmpl rs1+%g0,%g0 */
  465. { "jmp",        0x81c02000, 0x7e3fc000, "i", 1 }, /* jmpl %g0+i,%g0 */
  466. { "jmp",        0x81c02000, 0x7e381fff, "1+i", 1 },
  467.  
  468. { "nop",    0x01000000, 0xfe3fffff, "", 0 }, /* sethi 0, %g0 */
  469.  
  470. { "set",        0x01000000, 0xc0c00000, "Sh,d", 0 },
  471.  
  472. { "sethi",      0x01000000, 0xc0c00000, "h,d", 0 },
  473.  
  474. { "taddcctv",   0x81102000, 0x40e00000, "1,i,d", 0 },
  475. { "taddcctv",   0x81100000, 0x40e00000, "1,2,d", 0 },
  476. { "taddcc",     0x81002000, 0x40f80000, "1,i,d", 0 },
  477. { "taddcc",     0x81000000, 0x40f80000, "1,2,d", 0 },
  478.  
  479. { "tvc",    0x9fd02000, 0x402fc000, "i", 0 }, /* tvc %g0+i */
  480. { "tvc",        0x9fd02000, 0x40280000, "1+i", 0 },
  481. { "tvc",    0x9fd00000, 0x40282000, "1+2", 0 },
  482. { "tpos",    0x9dd02000, 0x402fc000, "i", 0 }, /* tpos %g0+i */
  483. { "tpos",    0x9dd02000, 0x40280000, "1+i", 0 },
  484. { "tpos",    0x9dd00000, 0x40282000, "1+2", 0 },
  485. { "tcc",        0x9bd02000, 0x402fc000, "i", 0 }, /* tcc %g0+i */
  486. { "tcc",    0x9bd02000, 0x40280000, "1+i", 0 },
  487. { "tcc",    0x9bd00000, 0x40282000, "1+2", 0 },
  488. { "tgu",    0x99d02000, 0x402fc000, "i", 0 }, /* tgu %g0+i */
  489. { "tgu",    0x99d02000, 0x40280000, "1+i", 0 },
  490. { "tgu",    0x99d00000, 0x40282000, "1+2", 0 },
  491. { "tge",    0x97d02000, 0x402fc000, "i", 0 }, /* tge %g0+i */
  492. { "tge",    0x97d02000, 0x40280000, "1+i", 0 },
  493. { "tge",    0x97d00000, 0x40282000, "1+2", 0 },
  494. { "tg",        0x95d02000, 0x402fc000, "i", 0 }, /* tg %g0+i */
  495. { "tg",        0x95d02000, 0x40280000, "1+i", 0 },
  496. { "tg",        0x95d00000, 0x40282000, "1+2", 0 },
  497. { "tne",        0x93d02000, 0x402fc000, "i", 0 }, /* tne %g0+i */
  498. { "tne",    0x93d02000, 0x40280000, "1+i", 0 },
  499. { "tne",    0x93d00000, 0x40282000, "1+2", 0 },
  500. { "tleu",       0x8bd02000, 0x502fc000, "i", 0 }, /* tleu %g0+i */
  501. { "tleu",    0x8bd02000, 0x50280000, "1+i", 0 },
  502. { "tleu",    0x8bd00000, 0x50282000, "1+2", 0 },
  503. { "ta",        0x91d02000, 0x402d0000, "1+i", 0 },
  504. { "ta",        0x91d00000, 0x40282000, "1+2", 0 },
  505. { "ta",            0x91d02000, 0x402fc000, "i", 0 }, /* ta %g0+i */
  506. { "tvs",    0x8fd02000, 0x502fc000, "i", 0 }, /* tvs %g0+i */
  507. { "tvs",    0x8fd02000, 0x50280000, "1+i", 0 },
  508. { "tvs",    0x8fd00000, 0x50282000, "1+2", 0 },
  509. { "tneg",    0x8dd02000, 0x502fc000, "i", 0 }, /* tneg %g0+i */
  510. { "tneg",    0x8dd02000, 0x50280000, "1+i", 0 },
  511. { "tneg",    0x8dd00000, 0x50282000, "1+2", 0 },
  512. { "tcs",        0x8bd02000, 0x502fc000, "i", 0 }, /* tcs %g0+i */
  513. { "tcs",    0x8bd02000, 0x50280000, "1+i", 0 },
  514. { "tcs",    0x8bd00000, 0x50282000, "1+2", 0 },
  515. { "tl",        0x87d02000, 0x502fc000, "i", 0 }, /* tl %g0+i */
  516. { "tl",        0x87d02000, 0x50280000, "1+i", 0 },
  517. { "tl",        0x87d00000, 0x50282000, "1+2", 0 },
  518. { "tle",    0x85d02000, 0x502fc000, "i", 0 }, /* tle %g0+i */
  519. { "tle",    0x85d02000, 0x50280000, "1+i", 0 },
  520. { "tle",    0x85d00000, 0x50282000, "1+2", 0 },
  521. { "te",            0x83d02000, 0x502fc000, "i", 0 }, /* te %g0+i */
  522. { "te",        0x83d02000, 0x50280000, "1+i", 0 },
  523. { "te",        0x83d00000, 0x50282000, "1+2", 0 },
  524. { "tn",        0x81d02000, 0x502fc000, "i", 0 }, /* tn %g0+i */
  525. { "tn",            0x81d02000, 0x50280000, "1+i", 0 },
  526. { "tn",        0x81d00000, 0x50282000, "1+2", 0 },
  527.  
  528. { "tsubcc",     0x81080000, 0x40f02000, "1,2,d", 0 },
  529. { "tsubcc",     0x81082000, 0x40f00000, "1,i,d", 0 },
  530. { "tsubcctv",   0x80580000, 0x40a02000, "1,2,d", 0 },
  531. { "tsubcctv",   0x80582000, 0x40a00000, "1,i,d", 0 },
  532.  
  533. { "unimp",      0x00000000, 0x00000000, "l", 0 },
  534.  
  535. { "iflush",     0x81d80000, 0x40202000, "1+2", 0 },
  536. { "iflush",     0x81d82000, 0x40200000, "1+i", 0 },
  537.  
  538. { "xnorcc",     0x80b80000, 0x41402000, "1,2,d", 0 },
  539. { "xnorcc",    0x80b82000, 0x41400000, "1,i,d", 0 },
  540. { "xnorcc",    0x80b82000, 0x41400000, "i,1,d", 0 },
  541. { "xorcc",      0x80980000, 0x41602000, "1,2,d", 0 },
  542. { "xorcc",    0x80982000, 0x41600000, "1,i,d", 0 },
  543. { "xorcc",    0x80982000, 0x41600000, "i,1,d", 0 },
  544. { "xnor",       0x80380000, 0x41c02000, "1,2,d", 0 },
  545. { "xnor",    0x80382000, 0x41c00000, "1,i,d", 0 },
  546. { "xnor",    0x80382000, 0x41c00000, "i,1,d", 0 },
  547. { "xor",        0x80180000, 0x41e02000, "1,2,d", 0 },
  548. { "xor",    0x80182000, 0x41e00000, "1,i,d", 0 },
  549. { "xor",    0x80182000, 0x41e00000, "i,1,d", 0 },
  550.  
  551. { "fpop1",      0x81a00000, 0x40580000, "[1+2],d", 0 },
  552. { "fpop2",      0x81a80000, 0x40500000, "[1+2],d", 0 },
  553.  
  554. { "fb",         0x31800000, 0xc0400000, ",al", 1 },
  555. { "fb",         0x11800000, 0xc0400000, "l", 1 },
  556. { "fba",        0x31800000, 0xc0400000, ",al", 1 },
  557. { "fba",        0x11800000, 0xc0400000, "l", 1 },
  558. { "fbn",        0x21800000, 0xc0400000, ",al", 1 },
  559. { "fbn",        0x01800000, 0xc0400000, "l", 1 },
  560. { "fbu",        0x2f800000, 0xc0400000, ",al", 1 },
  561. { "fbu",        0x0f800000, 0xc0400000, "l", 1 },
  562. { "fbg",        0x2d800000, 0xc0400000, ",al", 1 },
  563. { "fbg",        0x0d800000, 0xc0400000, "l", 1 },
  564. { "fbug",       0x2b800000, 0xc0400000, ",al", 1 },
  565. { "fbug",       0x0b800000, 0xc0400000, "l", 1 },
  566. { "fbl",        0x29800000, 0xc0400000, ",al", 1 },
  567. { "fbl",        0x09800000, 0xc0400000, "l", 1 },
  568. { "fbul",       0x27800000, 0xc0400000, ",al", 1 },
  569. { "fbul",       0x07800000, 0xc0400000, "l", 1 },
  570. { "fblg",       0x25800000, 0xc0400000, ",al", 1 },
  571. { "fblg",       0x05800000, 0xc0400000, "l", 1 },
  572. { "fbne",       0x23800000, 0xc0400000, ",al", 1 },
  573. { "fbne",       0x03800000, 0xc0400000, "l", 1 },
  574. { "fbe",        0x33800000, 0xc0400000, ",al", 1 },
  575. { "fbe",        0x13800000, 0xc0400000, "l", 1 },
  576. { "fbue",       0x35800000, 0xc0400000, ",al", 1 },
  577. { "fbue",       0x15800000, 0xc0400000, "l", 1 },
  578. { "fbge",       0x37800000, 0xc0400000, ",al", 1 },
  579. { "fbge",       0x17800000, 0xc0400000, "l", 1 },
  580. { "fbuge",      0x39800000, 0xc0400000, ",al", 1 },
  581. { "fbuge",      0x19800000, 0xc0400000, "l", 1 },
  582. { "fble",       0x3b800000, 0xc0400000, ",al", 1 },
  583. { "fble",       0x1b800000, 0xc0400000, "l", 1 },
  584. { "fbule",      0x3d800000, 0xc0400000, ",al", 1 },
  585. { "fbule",      0x1d800000, 0xc0400000, "l", 1 },
  586. { "fbo",        0x3f800000, 0xc0400000, ",al", 1 },
  587. { "fbo",        0x1f800000, 0xc0400000, "l", 1 },
  588.  
  589. { "cba",        0x31c00000, 0xce000000, ",al", 1 },
  590. { "cba",        0x11c00000, 0xce000000, "l", 1 },
  591. { "cbn",        0x21c00000, 0xde000000, ",al", 1 },
  592. { "cbn",        0x01c00000, 0xde000000, "l", 1 },
  593. { "cb3",        0x2fc00000, 0xc0000000, ",al", 1 },
  594. { "cb3",        0x0fc00000, 0xc0000000, "l", 1 },
  595. { "cb2",        0x2dc00000, 0xc0000000, ",al", 1 },
  596. { "cb2",        0x0dc00000, 0xc0000000, "l", 1 },
  597. { "cb23",       0x2bc00000, 0xc0000000, ",al", 1 },
  598. { "cb23",       0x0bc00000, 0xc0000000, "l", 1 },
  599. { "cb1",        0x29c00000, 0xc0000000, ",al", 1 },
  600. { "cb1",        0x09c00000, 0xc0000000, "l", 1 },
  601. { "cb13",       0x27c00000, 0xc0000000, ",al", 1 },
  602. { "cb13",       0x07c00000, 0xc0000000, "l", 1 },
  603. { "cb12",       0x25c00000, 0xc0000000, ",al", 1 },
  604. { "cb12",       0x05c00000, 0xc0000000, "l", 1 },
  605. { "cb123",      0x23c00000, 0xc0000000, ",al", 1 },
  606. { "cb123",      0x03c00000, 0xc0000000, "l", 1 },
  607. { "cb0",        0x33c00000, 0xc0000000, ",al", 1 },
  608. { "cb0",        0x13c00000, 0xc0000000, "l", 1 },
  609. { "cb03",       0x35c00000, 0xc0000000, ",al", 1 },
  610. { "cb03",       0x15c00000, 0xc0000000, "l", 1 },
  611. { "cb02",       0x37c00000, 0xc0000000, ",al", 1 },
  612. { "cb02",       0x17c00000, 0xc0000000, "l", 1 },
  613. { "cb023",      0x39c00000, 0xc0000000, ",al", 1 },
  614. { "cb023",      0x19c00000, 0xc0000000, "l", 1 },
  615. { "cb013",      0x3dc00000, 0xc0000000, ",al", 1 },
  616. { "cb013",      0x1dc00000, 0xc0000000, "l", 1 },
  617. { "cb012",      0x3fc00000, 0xc0000000, ",al", 1 },
  618. { "cb012",      0x1fc00000, 0xc0000000, "l", 1 },
  619.  
  620. { "fstoi",      0x81a01a20, 0x400025c0, "f,g", 0 },
  621. { "fdtoi",      0x81a01a40, 0x400025a0, "f,g", 0 },
  622. { "fxtoi",      0x81a01a60, 0x40002580, "f,g", 0 },
  623.  
  624. { "fitox",      0x81a01980, 0x40002660, "f,g", 0 },
  625. { "fitod",      0x81a01900, 0x400026e0, "f,g", 0 },
  626. { "fitos",      0x81a01880, 0x40002660, "f,g", 0 },
  627.  
  628. { "fstod",      0x81a01920, 0x400026c0, "f,g", 0 },
  629. { "fstox",      0x81a019a0, 0x40002640, "f,g", 0 },
  630. { "fdtos",      0x81a018c0, 0x40002720, "f,g", 0 },
  631. { "fdtox",      0x81a019c0, 0x40002620, "f,g", 0 },
  632. { "fxtos",      0x81a018e0, 0x40002700, "f,g", 0 },
  633. { "fxtod",      0x81a01960, 0x40002680, "f,g", 0 },
  634.  
  635. { "fdivx",      0x81a009e0, 0x40083600, "e,f,g", 0 },
  636. { "fdivd",      0x81a009c0, 0x40003620, "e,f,g", 0 },
  637. { "fdivs",      0x81a009a0, 0x40003640, "e,f,g", 0 },
  638. { "fmuls",      0x81a00920, 0x400036c0, "e,f,g", 0 },
  639. { "fmuld",      0x81a00940, 0x400036a0, "e,f,g", 0 },
  640. { "fmulx",      0x81a00960, 0x40003680, "e,f,g", 0 },
  641.  
  642. { "fsqrts",     0x81a00520, 0x40003ac0, "f,g", 0 },
  643. { "fsqrtd",     0x81a00540, 0x40003aa8, "f,g", 0 },
  644. { "fsqrtx",     0x81a00560, 0x40003a80, "f,g", 0 },
  645.  
  646. { "fabss",      0x81a00120, 0x40003ec0, "f,g", 0 },
  647. { "fnegs",      0x81a000a0, 0x40003f40, "f,g", 0 },
  648. { "fmovs",      0x81a00020, 0x40003fc0, "f,g", 0 },
  649.  
  650. { "fsubx",      0x81a008e0, 0x40003700, "e,f,g", 0 },
  651. { "fsubd",      0x81a008c0, 0x40003720, "e,f,g", 0 },
  652. { "fsubs",      0x81a008a0, 0x40003740, "e,f,g", 0 },
  653. { "faddx",      0x81a00860, 0x40003780, "e,f,g", 0 },
  654. { "faddd",      0x81a00840, 0x400037a0, "e,f,g", 0 },
  655. { "fadds",      0x81a00820, 0x400037c0, "e,f,g", 0 },
  656.  
  657. { "fcmpex",     0x81a80ae0, 0x40003500, "e,f", 0 },
  658. { "fcmped",     0x81a80ac0, 0x40003520, "e,f", 0 },
  659. { "fcmpes",     0x81a80aa0, 0x40003540, "e,f", 0 },
  660. { "fcmpx",      0x81a80a60, 0x40003580, "e,f", 0 },
  661. { "fcmpd",      0x81a80a40, 0x400035a0, "e,f", 0 },
  662. { "fcmps",      0x81a80a20, 0x400035c0, "e,f", 0 },
  663.  
  664. { "cpop1",      0x81b00000, 0x40480000, "[1+2],d", 0 },
  665. { "cpop2",      0x81b80000, 0x40400000, "[1+2],d", 0 },
  666. };
  667.  
  668. #define NUMOPCODES ((sizeof sparc_opcodes)/(sizeof sparc_opcodes[0]))
  669.  
  670. @
  671.  
  672.  
  673. 1.1
  674. log
  675. @Initial revision
  676. @
  677. text
  678. @d88 1
  679. a88 1
  680. { "ldd",        0xc1980000, 0x0060001f, "[1],D", 0 }, /* ldd [rs1+%g0],d */
  681. d92 2
  682. a93 2
  683. { "ldd",        0xc1980000, 0x00600000, "[1+2],D", 0 },
  684. { "ldd",        0xc1180000, 0x00e0001f, "[1],g", 0 }, /* ldd [rs1+%g0],d */
  685. d97 2
  686. a98 2
  687. { "ldd",        0xc1180000, 0x00e00000, "[1+2],g", 0 },
  688. { "ldd",    0xc0180000, 0x01e0001f, "[1],d", 0 }, /* ldd [rs1+%g0],d */
  689. d102 2
  690. a103 2
  691. { "ldd",    0xc0180000, 0x01e00000, "[1+2],d", 0 },
  692. { "ld",         0xc1880000, 0x0070001f, "[1],C", 0 }, /* ld [rs1+%g0],d */
  693. d107 1
  694. a107 1
  695. { "ld",         0xc1880000, 0x00700000, "[1+2],C", 0 },
  696. d112 2
  697. a113 2
  698. { "ld",         0xc1800000, 0x00780000, "[1+2],D", 0 },
  699. { "ld",         0xc1080000, 0x00f0001f, "[1],F", 0 }, /* ld [rs1+%g0],d */
  700. d117 2
  701. a118 2
  702. { "ld",         0xc1080000, 0x00f00000, "[1+2],F", 0 },
  703. { "ld",         0xc1000000, 0x00f8001f, "[1],g", 0 }, /* ld [rs1+%g0],d */
  704. d122 2
  705. a123 2
  706. { "ld",         0xc1000000, 0x00f80000, "[1+2],g", 0 },
  707. { "ld",            0xc0000000, 0x01f8001f, "[1],d", 0 }, /* ld [rs1+%g0],d */
  708. d127 2
  709. a128 2
  710. { "ld",        0xc0000000, 0x01f80000, "[1+2],d", 0 },
  711. { "ldstuba",    0xc0d80000, 0x0100001f, "[1]A,d", 0 }, /* ldstuba [rs1+%g0],d */
  712. d130 2
  713. a131 2
  714. { "ldstuba",    0xc0d80000, 0x01000000, "[1+2]A,d", 0 },
  715. { "ldsha",      0xc0d00000, 0x0128001f, "[1]A,d", 0 }, /* ldsha [rs1+%g0],d */
  716. d133 2
  717. a134 2
  718. { "ldsha",    0xc0d00000, 0x01280000, "[1+2]A,d", 0 },
  719. { "ldsba",      0xc0c80000, 0x0130001f, "[1]A,d", 0 }, /* ldsba [rs1+%g0],d */
  720. d136 2
  721. a137 2
  722. { "ldsba",    0xc0c80000, 0x01300000, "[1+2]A,d", 0 },
  723. { "ldda",       0xc0980000, 0x0160001f, "[1]A,d", 0 }, /* ldda [rs1+%g0],d */
  724. d139 2
  725. a140 2
  726. { "ldda",    0xc0980000, 0x01600000, "[1+2]A,d", 0 },
  727. { "lduha",      0xc0900000, 0x0168001f, "[1]A,d", 0 }, /* lduha [rs1+%g0],d */
  728. d142 2
  729. a143 2
  730. { "lduha",    0xc0900000, 0x01680000, "[1+2]A,d", 0 },
  731. { "ldstub",     0xc0680000, 0x0190001f, "[1],d", 0 }, /* ldstub [rs1+%g0],d */
  732. d147 2
  733. a148 2
  734. { "ldstub",    0xc0680000, 0x01900000, "[1+2],d", 0 },
  735. { "lda",        0xc0800000, 0x0178001f, "[1]A,d", 0 }, /* lda [rs1+%g0],d */
  736. d150 2
  737. a151 2
  738. { "lda",    0xc0800000, 0x01780000, "[1+2]A,d", 0 },
  739. { "ldsh",       0xc0500000, 0x0000000d, "[1],d", 0 }, /* ldsh [rs1+%g0],d */
  740. d155 2
  741. a156 2
  742. { "ldsh",    0xc0500000, 0x01a80000, "[1+2],d", 0 },
  743. { "ldsb",       0xc0480000, 0x01b0001f, "[1],d", 0 }, /* ldsb [rs1+%g0],d */
  744. d160 2
  745. a161 2
  746. { "ldsb",    0xc0480000, 0x01b00000, "[1+2],d", 0 },
  747. { "ldub",       0xc0080000, 0x01f0001f, "[1],d", 0 }, /* ldub [rs1+%g0],d */
  748. d165 2
  749. a166 2
  750. { "ldub",    0xc0080000, 0x01f00000, "[1+2],d", 0 },
  751. { "lduba",      0xc0880000, 0x0170001f, "[1]A,d", 0 }, /* lduba [rs1+%g0],d */
  752. d168 1
  753. a168 1
  754. { "lduba",    0xc0880000, 0x01700000, "[1+2]A,d", 0 },
  755. d171 1
  756. a171 1
  757. { "lduh",    0xc0100000, 0x01e8001f, "[1],d", 0 }, /* lduh [rs1+%g0],d */
  758. d173 1
  759. a173 1
  760. { "lduh",    0xc0100000, 0x01e80000, "[1+2],d", 0 },
  761. d175 1
  762. a175 1
  763. { "st",            0xc0200000, 0x01d8001f, "d,[1]", 0 }, /* st d,[rs1+%g0] */
  764. d179 2
  765. a180 2
  766. { "st",        0xc0200000, 0x01d80000, "d,[1+2]", 0 },
  767. { "st",        0xc1200000, 0x00d8001f, "g,[1]", 0 }, /* st d[rs1+%g0] */
  768. d184 6
  769. a189 6
  770. { "st",        0xc1200000, 0x00d80000, "g,[1+2]", 0 },
  771. { "st",        0xc1100000, 0x00c0001f, "F,[1]", 0 }, /* st d,[rs1+%g0] */
  772. { "st",            0xc1102000, 0x00c01fff, "F,[1]", 0 }, /* st d,[rs1+0] */
  773. { "st",        0xc1102000, 0x00c00000, "F,[1+i]", 0 },
  774. { "st",        0xc1102000, 0x00c00000, "F,[i+1]", 0 },
  775. { "st",        0xc1100000, 0x00c00000, "F,[1+2]", 0 },
  776. d194 2
  777. a195 2
  778. { "st",        0xc1a00000, 0x00580000, "D,[1+2]", 0 },
  779. { "st",        0xc1a80000, 0x0050001f, "C,[1]", 0 }, /* st d,[rs1+%g0] */
  780. d199 2
  781. a200 2
  782. { "st",        0xc1a80000, 0x00500000, "C,[1+2]", 0 },
  783. { "sta",        0xc0a00000, 0x0108001f, "d,[1]A", 0 }, /* sta d,[rs1+%g0] */
  784. d202 1
  785. a202 1
  786. { "sta",    0xc0a00000, 0x01080000, "d,[1+2]A", 0 },
  787. d204 1
  788. a204 1
  789. { "stb",        0xc0280000, 0x01d0001f, "d,[1]", 0 }, /* stb d,[rs1+%g0] */
  790. d208 3
  791. a210 3
  792. { "stb",    0xc0280000, 0x01d00000, "d,[1+2]", 0 },
  793. { "stba",       0xc0a80000, 0x01000000, "d,[1+2]A", 0 },
  794. { "stba",    0xc0a80000, 0x0100001f, "d,[1]A", 0 }, /* stba d,[rs1+%g0] */
  795. d213 1
  796. a213 1
  797. { "std",        0xc0380000, 0x01c0001f, "d,[1]", 0 }, /* std d,[rs1+%g0] */
  798. d217 2
  799. a218 2
  800. { "std",    0xc0380000, 0x01c00000, "d,[1+2]", 0 },
  801. { "std",    0xc1380000, 0x00c0001f, "g,[1]", 0 }, /* std d,[rs1+%g0] */
  802. d222 2
  803. a223 2
  804. { "std",    0xc1380000, 0x00c00000, "g,[1+2]", 0 },
  805. { "std",        0xc1300000, 0x00c8001f, "q,[1]", 0 }, /* std d,[rs1+%g0] */
  806. d227 2
  807. a228 2
  808. { "std",    0xc1300000, 0x00c80000, "q,[1+2]", 0 },
  809. { "std",    0xc1b80000, 0x0040001f, "D,[1]", 0 }, /* std d,[rs1+%g0] */
  810. d232 2
  811. a233 2
  812. { "std",    0xc1b80000, 0x00400000, "D,[1+2]", 0 },
  813. { "std",    0xc1b00000, 0x0048001f, "Q,[1]", 0 }, /* std d,[rs1+%g0] */
  814. d237 3
  815. a239 3
  816. { "std",    0xc1b00000, 0x00480000, "Q,[1+2]", 0 },
  817. { "stda",       0xc0b80000, 0x01400000, "d,[1+2]A", 0 },
  818. { "stda",    0xc0b80000, 0x0140001f, "d,[1]A", 0 }, /* stda d,[rs1+%g0] */
  819. d242 1
  820. a242 1
  821. { "sth",        0xc0300000, 0x01c8001f, "d,[1]", 0 }, /* sth d,[rs1+%g0] */
  822. d244 1
  823. a244 1
  824. { "sth",    0xc0300000, 0x01c80000, "d,[1+2]", 0 },
  825. d247 1
  826. a247 1
  827. { "stha",       0xc0b00000, 0x0148001f, "d,[1]A", 0 }, /* stha d,[rs1+%g0] */
  828. d249 1
  829. a249 1
  830. { "stha",    0xc0b00000, 0x01480000, "d,[1+2]A", 0 },
  831. d251 1
  832. a251 1
  833. { "swap",       0xc0780000, 0x0180001f, "[1],d", 0 }, /* swap [rs1+%g0],d */
  834. d255 1
  835. a255 1
  836. { "swap",       0xc0780000, 0x01800000, "[1+2],d", 0 },
  837. d257 1
  838. a257 1
  839. { "swapa",      0xc0f80000, 0x0100001f, "[1]A,d", 0 }, /* swapa [rs1+%g0],d */
  840. d264 1
  841. d266 2
  842. a267 1
  843. { "rett",    0x81c80000, 0x40300000, "1,2,d", 1 },
  844. d269 2
  845. a270 1
  846. { "save",    0x81e00000, 0x40180000, "1,2,d", 0 },
  847. d275 1
  848. a275 1
  849. { "jmpl",       0x81c00000, 0x4038001f, "1,d", 1 }, /* jmpl rs1+%g0,d */
  850. d279 1
  851. a279 1
  852. { "jmpl",    0x81c00000, 0x40380000, "1+2,d", 1 },
  853. d281 1
  854. a281 1
  855. { "wr",         0x81980000, 0x40600000, "1,2,t", 0 },
  856. d283 1
  857. a283 1
  858. { "wr",         0x81900000, 0x40680000, "1,2,w", 0 },
  859. d285 1
  860. a285 1
  861. { "wr",         0x81880000, 0x40700000, "1,2,p", 0 },
  862. d287 1
  863. a287 1
  864. { "wr",         0x81800000, 0x40780000, "1,2,y", 0 },
  865. d295 1
  866. a295 1
  867. { "sra",    0x81380000, 0x00000000, "1,2,d", 0 },
  868. d297 1
  869. a297 1
  870. { "srl",    0x81300000, 0x40c80000, "1,2,d", 0 },
  871. d299 1
  872. a299 1
  873. { "sll",    0x81280000, 0x40d00000, "1,2,d", 0 },
  874. d302 1
  875. a302 1
  876. { "mulscc",    0x81200000, 0x40d80000, "1,2,d", 0 },
  877. d309 1
  878. a309 1
  879. { "orncc",    0x80b00000, 0x04048000, "1,2,d", 0 },
  880. d314 1
  881. a314 1
  882.   
  883. d317 1
  884. a317 1
  885. { "orcc",    0x80900000, 0x41680000, "1,2,d", 0 },
  886. d320 1
  887. a320 1
  888. { "orn",    0x80300000, 0x41c80000, "1,2,d", 0 },
  889. a321 2
  890. { "mov",        0x81800000, 0x4078001f, "1,y", 0 }, /* wr rs1,%g0,%y */
  891. { "mov",        0x81802000, 0x40781fff, "1,y", 0 }, /* wr rs1,0,%y */
  892. d325 17
  893. d344 1
  894. a344 1
  895. { "or",        0x80100000, 0x40800000, "1,2,d", 0 },
  896. d348 1
  897. a348 1
  898. { "andncc",    0x80a80000, 0x41500000, "1,2,d", 0 },
  899. d351 1
  900. a351 1
  901. { "andn",    0x80280000, 0x41d00000, "1,2,d", 0 },
  902. d354 1
  903. a354 1
  904. { "cmp",    0x80a00000, 0x7d580000, "1,2", 0 },     /* subcc rs1,rs2,%g0 */
  905. d357 1
  906. a357 1
  907. { "subcc",    0x80a00000, 0x41580000, "1,2,d", 0 },
  908. d359 1
  909. a359 1
  910. { "sub",    0x80200000, 0x41d80000, "1,2,d", 0 },
  911. d361 1
  912. a361 1
  913. { "subx",    0x80600000, 0x41980000, "1,2,d", 0 },
  914. d363 1
  915. a363 1
  916. { "subxcc",    0x80e00000, 0x41180000, "1,2,d", 0 },
  917. d367 1
  918. a367 1
  919. { "andcc",    0x80880000, 0x41700000, "1,2,d", 0 },
  920. d370 1
  921. a370 1
  922. { "and",    0x80080000, 0x41f00000, "1,2,d", 0 },
  923. d376 1
  924. a376 1
  925. { "addxcc",     0x80c00000, 0x41380000, "1,2,d", 0 },
  926. d379 1
  927. a379 1
  928. { "addcc",      0x80800000, 0x41780000, "1,2,d", 0 },
  929. d382 1
  930. a382 1
  931. { "addx",    0x80400000, 0x41b80000, "1,2,d", 0 },
  932. d385 1
  933. a385 1
  934. { "add",    0x80000000, 0x41f80000, "1,2,d", 0 },
  935. d424 3
  936. d433 2
  937. d438 1
  938. d453 1
  939. a453 1
  940. { "tvc",    0x9fd00000, 0x40280000, "1+2", 0 },
  941. d456 1
  942. a456 1
  943. { "tpos",    0x9dd00000, 0x40280000, "1+2", 0 },
  944. d459 1
  945. a459 1
  946. { "tcc",    0x9bd00000, 0x40280000, "1+2", 0 },
  947. d462 1
  948. a462 1
  949. { "tgu",    0x99d00000, 0x40280000, "1+2", 0 },
  950. d465 1
  951. a465 1
  952. { "tge",    0x97d00000, 0x40280000, "1+2", 0 },
  953. d468 1
  954. a468 1
  955. { "tg",        0x95d00000, 0x40280000, "1+2", 0 },
  956. d471 1
  957. a471 1
  958. { "tne",    0x93d00000, 0x40280000, "1+2", 0 },
  959. d474 1
  960. a474 1
  961. { "tleu",    0x8bd00000, 0x50280000, "1+2", 0 },
  962. d476 1
  963. a476 1
  964. { "ta",        0x91d00000, 0x40280000, "1+2", 0 },
  965. d480 1
  966. a480 1
  967. { "tvs",    0x8fd00000, 0x50280000, "1+2", 0 },
  968. d483 1
  969. a483 1
  970. { "tneg",    0x8dd00000, 0x50280000, "1+2", 0 },
  971. d486 1
  972. a486 1
  973. { "tcs",    0x8bd00000, 0x50280000, "1+2", 0 },
  974. d489 1
  975. a489 1
  976. { "tl",        0x87d00000, 0x50280000, "1+2", 0 },
  977. d492 1
  978. a492 1
  979. { "tle",    0x85d00000, 0x50280000, "1+2", 0 },
  980. d495 1
  981. a495 1
  982. { "te",        0x83d00000, 0x50280000, "1+2", 0 },
  983. d498 1
  984. a498 1
  985. { "tn",        0x81d00000, 0x50280000, "1+2", 0 },
  986. d500 1
  987. a500 1
  988. { "tsubcc",     0x81080000, 0x40f00000, "1,2,d", 0 },
  989. d502 1
  990. a502 1
  991. { "tsubcctv",   0x80580000, 0x40a00000, "1,2,d", 0 },
  992. d507 1
  993. a507 1
  994. { "iflush",     0x81d80000, 0x40200000, "1+2", 0 },
  995. d510 1
  996. a510 1
  997. { "xnorcc",     0x80b80000, 0x41400000, "1,2,d", 0 },
  998. d513 1
  999. a513 1
  1000. { "xorcc",      0x80980000, 0x41600000, "1,2,d", 0 },
  1001. d516 1
  1002. a516 1
  1003. { "xnor",       0x80380000, 0x41c00000, "1,2,d", 0 },
  1004. d519 1
  1005. a519 1
  1006. { "xor",        0x80180000, 0x41e00000, "1,2,d", 0 },
  1007. @
  1008.